Word Embeddings হল একটি টেক্সট প্রক্রিয়া করার কৌশল যেখানে শব্দগুলোকে গাণিতিক ভেক্টরের আকারে উপস্থাপন করা হয়। এই ভেক্টরগুলো শব্দের অর্থ এবং সম্পর্কের প্রতিফলন করে, যা মেশিন লার্নিং মডেলগুলোকে শব্দের মধ্যে সেমান্টিক সম্পর্ক বুঝতে সহায়তা করে। দুইটি প্রধান word embedding মডেল হল Word2Vec এবং GloVe।
১. Word2Vec
Word2Vec হল একটি নিউরাল নেটওয়ার্ক ভিত্তিক মডেল, যা শব্দগুলোর ভেক্টর তৈরি করতে ব্যবহৃত হয়। এটি মূলত দুটি পদ্ধতি ব্যবহার করে: CBOW (Continuous Bag of Words) এবং Skip-gram।
১.১. CBOW (Continuous Bag of Words)
এই পদ্ধতিতে, কয়েকটি surrounding (অতীত এবং ভবিষ্যৎ) শব্দকে ব্যবহার করে একটি target (কেন্দ্র) শব্দের পূর্বাভাস করা হয়। উদাহরণস্বরূপ, যদি sentence হয় "The cat sat on the mat", তাহলে surrounding words হতে পারে "The", "sat", "on", "the", "mat" এবং তাদের সাহায্যে "cat" পূর্বাভাস করা হয়।
১.২. Skip-gram
এই পদ্ধতিতে, একক target শব্দ থেকে surrounding শব্দগুলির পূর্বাভাস করা হয়। উদাহরণস্বরূপ, "cat" শব্দ থেকে surrounding words "The", "sat", "on", "the", "mat" পূর্বাভাস করা হবে।
Word2Vec মডেলটি শব্দের মধ্যে সেমান্টিক সম্পর্ক শিখতে পারে, যেমন "king" - "man" + "woman" ≈ "queen"। এই ধরনের সম্পর্ককে শব্দের ভেক্টরগুলির মধ্যে গণনা করা সম্ভব।
১.৩. Word2Vec এর কোড উদাহরণ
import gensim
from gensim.models import Word2Vec
# কিছু টেক্সট ডেটা
sentences = [
['the', 'cat', 'sat', 'on', 'the', 'mat'],
['the', 'dog', 'barked'],
['the', 'cat', 'meowed']
]
# Word2Vec মডেল তৈরি করা
model = Word2Vec(sentences, vector_size=10, window=2, min_count=1, workers=4)
# একটি শব্দের ভেক্টর দেখতে
word_vector = model.wv['cat']
print(word_vector)
# শব্দের মধ্যে সম্পর্ক খুঁজে পাওয়া
similar_words = model.wv.most_similar('cat', topn=3)
print(similar_words)
২. GloVe (Global Vectors for Word Representation)
GloVe একটি লিনিয়ার মডেল যা শব্দের সহাবস্থান পরিসংখ্যানের উপর ভিত্তি করে কাজ করে। GloVe শব্দের জন্য ভেক্টর তৈরি করে, যা প্রতিটি শব্দের সম্বন্ধিত সহাবস্থান মেট্রিক্স ব্যবহার করে। GloVe মডেল global word-word co-occurrence matrix ব্যবহার করে শব্দগুলির সম্পর্ক শিখতে সক্ষম হয়, যেখানে দুটি শব্দ একটি নির্দিষ্ট কনটেক্সটে একসাথে কতবার ব্যবহার হয়েছে তা পরিমাপ করা হয়।
GloVe মডেলটি একটি পরিসংখ্যান ভিত্তিক পদ্ধতি, যেখানে শব্দগুলির সহাবস্থান পরিমাপ করা হয়। এটি গাণিতিকভাবে শব্দের কনটেক্সট এবং সম্পর্ক বুঝতে সাহায্য করে এবং উচ্চাকাঙ্খী সম্পর্কের ভেক্টর তৈরি করে।
২.১. GloVe এর কোড উদাহরণ
GloVe মডেল সাধারণত প্রশিক্ষিত মডেল হিসেবে GloVe এর অফিসিয়াল সাইট থেকে ডাউনলোড করা হয়, এবং সেখান থেকে মডেলটি ব্যবহার করা হয়।
import numpy as np
# GloVe এর ট্রেনড মডেল লোড করা
def load_glove_model(glove_file):
model = {}
with open(glove_file, 'r', encoding='utf-8') as f:
for line in f:
values = line.split()
word = values[0]
coefs = np.asarray(values[1:], dtype='float32')
model[word] = coefs
print(f"Loaded {len(model)} words")
return model
# GloVe মডেল লোড করা (উদাহরণ: 'glove.6B.50d.txt')
glove_model = load_glove_model('glove.6B.50d.txt')
# একটি শব্দের ভেক্টর বের করা
word_vector = glove_model['cat']
print(word_vector)
# দুটি শব্দের সিমিলারিটি বের করা
from numpy import dot
from numpy.linalg import norm
def cosine_similarity(vec1, vec2):
return dot(vec1, vec2) / (norm(vec1) * norm(vec2))
similarity = cosine_similarity(glove_model['cat'], glove_model['dog'])
print(f"Similarity between 'cat' and 'dog': {similarity}")
৩. Word2Vec এবং GloVe এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Word2Vec | GloVe |
|---|---|---|
| মূল ধারণা | শব্দের প্রতিবিম্ব তৈরির জন্য নিউরাল নেটওয়ার্ক ব্যবহার করা | সহাবস্থান পরিসংখ্যানের মাধ্যমে শব্দের সম্পর্ক তৈরি করা |
| প্রকৃতি | নিউরাল নেটওয়ার্ক ভিত্তিক | পরিসংখ্যান ভিত্তিক |
| প্রক্রিয়া | গাণিতিক প্রশিক্ষণ (নিউরাল নেটওয়ার্ক) | গাণিতিক সহাবস্থান পরিসংখ্যান মেট্রিক্স |
| ব্ল্যাকবক্স | হার্ডওয়ার্ক থেকে শিখে প্রতিটি শব্দের অর্থ বোঝা | শব্দের সম্পর্কের একটি গ্লোবাল ম্যাট্রিক্স তৈরি করা |
| ব্যবহারযোগ্যতা | ছোট আকারের ডেটাসেটের জন্য উপযুক্ত | বড় আকারের ডেটাসেটের জন্য উপযুক্ত |
৪. Word Embedding Visualization
Word embeddings ভিজ্যুয়ালাইজ করা খুবই গুরুত্বপূর্ণ, যাতে আমরা শব্দগুলির সম্পর্ক এবং কনটেক্সট বুঝতে পারি। সাধারণত t-SNE বা PCA ব্যবহার করে word embeddings ভিজ্যুয়ালাইজ করা হয়।
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# GloVe বা Word2Vec থেকে শব্দের ভেক্টর পেতে
words = list(glove_model.keys())
vectors = np.array([glove_model[word] for word in words])
# PCA দিয়ে 2D তে রূপান্তর করা
pca = PCA(n_components=2)
result = pca.fit_transform(vectors)
# শব্দগুলি ভিজ্যুয়ালাইজ করা
plt.figure(figsize=(10, 10))
for i, word in enumerate(words[:100]): # প্রথম 100টি শব্দ
plt.text(result[i, 0], result[i, 1], word, fontsize=12)
plt.show()
সারাংশ
- Word2Vec এবং GloVe হল দুটি জনপ্রিয় শব্দ এম্বেডিং প্রযুক্তি যা শব্দের সম্পর্ক এবং কনটেক্সট বুঝতে সহায়তা করে।
- Word2Vec নিউরাল নেটওয়ার্ক ব্যবহার করে শব্দের ভেক্টর তৈরি করে, যা শব্দগুলির মধ্যে সেমান্টিক সম্পর্ক বুঝতে সাহায্য করে।
- GloVe পরিসংখ্যান ভিত্তিক পদ্ধতি যা বৃহৎ ডেটাসেটের মধ্যে শব্দের সহাবস্থান পরিমাপ করে।
- t-SNE বা PCA এর মাধ্যমে শব্দের ভেক্টর ভিজ্যুয়ালাইজেশন করা যেতে পারে, যা শব্দগুলির মধ্যে সম্পর্ক এবং কনটেক্সট বোঝাতে সাহায্য করে।
এভাবে আপনি Word2Vec এবং GloVe ব্যবহার করে টেক্সট ডেটা প্রক্রিয়া করতে পারেন এবং শব্দগুলির সম্পর্কের ব্যাপারে আরও গভীর ধারণা পেতে পারেন।
Read more